www.gusucode.com > VC++ 汽配销售管理系统(Access)源码程序 > VC++ 汽配销售管理系统(Access)源码程序/源码/BaseButton.cpp

    //Download by http://www.NewXing.com
// BaseButton.cpp : implementation file
//

#include "stdafx.h"
#include "qpglxt.h"
#include "BaseButton.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CBaseButton

CBaseButton::CBaseButton(UINT NomalPic,UINT DownPic,UINT EnablePic)
{
	 m_DownPic=DownPic;
	 m_NomalPic=NomalPic;
	 m_EnablePic=EnablePic;
}

CBaseButton::~CBaseButton()
{

}


BEGIN_MESSAGE_MAP(CBaseButton, CButton)
	//{{AFX_MSG_MAP(CBaseButton)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBaseButton message handlers

bool CBaseButton::Drawit(CDC *pDC, UINT ResID)
{
	CDC memDC;
	CBitmap bit;
	CBitmap* pbit;
	COLORREF Col,OldCol;
	BITMAP bitstruct;
	bit.LoadBitmap(ResID);
	bit.GetBitmap(&bitstruct);
	
	memDC.CreateCompatibleDC(pDC);
	pbit=memDC.SelectObject(&bit);

	OldCol=memDC.GetPixel(0,0);
	for(int x=0;x<bitstruct.bmWidth;x++)
	{
		for(int y=0;y<bitstruct.bmHeight;y++)
		{
			Col=memDC.GetPixel(x,y);
			if(Col!=OldCol)
				pDC->SetPixel(x,y,Col);
		}
	}
	memDC.DeleteDC();
	bit.DeleteObject();
	pbit->DeleteObject();
	return true;
}

void CBaseButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
	CDC* pDC;
	pDC=CDC::FromHandle(lpDrawItemStruct->hDC);
	UINT state=lpDrawItemStruct->itemState;
	CRect focRect,rect=lpDrawItemStruct->rcItem;
	focRect.left=rect.left+3;
	focRect.right=rect.right-3;
	focRect.top=rect.top+3;
	focRect.bottom=rect.bottom-3;
	//写按钮文本
	pDC->SetBkMode(TRANSPARENT);
	CString sCaption;
	this->GetWindowText(sCaption);
	if(state&ODS_SELECTED)
	{
		Drawit(pDC,m_DownPic);
		pDC->SetTextColor(RGB(255,100,100));
	}
	else
	{
		Drawit(pDC,m_NomalPic);
		pDC->SetTextColor(RGB(255,255,155));
	}
	if(state&ODS_FOCUS)
	{
		pDC->DrawFocusRect(&focRect);
		lpDrawItemStruct->itemAction=ODA_FOCUS ;
	}
	if(state&ODS_DISABLED)
	{
		Drawit(pDC,m_EnablePic);
		pDC->SetTextColor(RGB(96,96,96));
	}
	pDC->DrawText(sCaption,rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE);
}



BOOL CBaseButton::PreTranslateMessage(MSG* pMsg) 
{

	if(pMsg->hwnd==this->GetSafeHwnd()&&pMsg->message==WM_KEYDOWN && pMsg->wParam==13)
	{
		pMsg->lParam=589857;
		pMsg->message=WM_LBUTTONDOWN;
	}
	if(pMsg->hwnd==this->GetSafeHwnd()&&pMsg->message==WM_KEYUP && pMsg->wParam==13)
	{
		pMsg->lParam=589857;
		pMsg->message=WM_LBUTTONUP;
	}
	return CButton::PreTranslateMessage(pMsg);
}